/**
 * 
 */
package tur.br.moradadosol.view.form;

import java.util.Calendar;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

import tur.br.moradadosol.model.Apartamento;
import tur.br.moradadosol.model.Hospedagem;
import tur.br.moradadosol.model.Hospede;
import tur.br.moradadosol.util.Util;

/**
 * @author alex
 *
 */
public class SaidaForm extends ActionForm {
	
	private static final long serialVersionUID = 4816980167607032138L;
	
	private Hospedagem hospedagem;
	private String procurarHospedagem;
	private String fechar;
	
	public SaidaForm() {
		reset();
	}
	
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		setProcurarHospedagem("");
		setFechar("");
	}
	
	public void reset() {
		hospedagem = new Hospedagem();
		Hospede hospede = new Hospede();
		hospedagem.setHospede(hospede);
		Apartamento apartamento = new Apartamento();
		hospedagem.setApartamento(apartamento);
	}
	
	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		
		ActionErrors errors = new ActionErrors();

		try {
			if(getFechar().length() > 0) {
				//validar se hospedagem foi selecionada
				if(hospedagem == null || hospedagem.getCodigo() == 0) {
					errors.add("saida.error", 
							new ActionMessage("error.saida.hospedagem.required"));
				}
				
				//validar se data saída está preenchida
				if(hospedagem!=null && hospedagem.getSaida()==null) {
					errors.add("saida.error", 
							new ActionMessage("error.saida.saida.required"));
				}
			}
		} catch (Exception e) {
			errors.add("saida.error", 
					new ActionMessage("error.saida.fechamento.validation"));
			errors.add("saida.error", new ActionMessage(e.getLocalizedMessage()));
		}
		
		return errors;
	}
	
	/**
	 * @return the fechar
	 */
	public String getFechar() {
		return fechar;
	}
	/**
	 * @param fechar the fechar to set
	 */
	public void setFechar(String fechar) {
		this.fechar = fechar;
	}
	/**
	 * @return the procurar
	 */
	public String getProcurarHospedagem() {
		return procurarHospedagem;
	}
	/**
	 * @param procurar the procurar to set
	 */
	public void setProcurarHospedagem(String procurar) {
		this.procurarHospedagem = procurar;
	}
	/**
	 * @param hospedagem the hospedagem to set
	 */
	public void setHospedagem(Hospedagem hospedagem) {
		this.hospedagem = hospedagem;
	}
	
	public String getChave() {
		return hospedagem.getChave();
	}
	
	public String getNomeHospede() {
		return hospedagem.getHospede().getNome();
	}
	
	public String getSiglaApartamento() {
		return hospedagem.getApartamento().getSigla();
	}
	
	public int getQuantidade() {
		return hospedagem.getQuantidade();
	}
	
	public String getEntrada() {
		return Util.getDate(hospedagem.getEntrada());
	}
	
	public void setSaida(String saida) {
		hospedagem.setSaida(Util.getDate(saida));
	}
	
	public String getSaidaFormatada() {
		return Util.getDate(hospedagem.getSaida());
	}
	
	public void setSaidaFormatada(String saida) {
		hospedagem.setSaida(Util.getDate(saida));
	}
	
	public Calendar getSaida() {
		return hospedagem.getSaida();
	}
	
	public String getPreco() {
		return Util.getValorFormatado(hospedagem.getPreco());
	}
	
	public String getSinal() {
		return Util.getValorFormatado(hospedagem.getSinal());
	}

	public String getRestanteFormatado() {
		return Util.getValorFormatado(hospedagem.getRestante());
	}
	
	public void setRestanteFormatado(String valor) {
		hospedagem.setRestante(Util.getValorFloat(valor));
	}
	
	public float getRestante() {
		return hospedagem.getRestante();
	}
	
	public long getCodigo() {
		return hospedagem.getCodigo();
	}
	
	public void setCodigo(long codigo) {
		hospedagem.setCodigo(codigo);
	}
	
}
